如何用vba实现word的查找和替换功能?

您所在的位置:网站首页 vba 字符串查找 如何用vba实现word的查找和替换功能?

如何用vba实现word的查找和替换功能?

2023-04-13 07:03| 来源: 网络整理| 查看: 265

如何用vba实现word的查找和替换功能? 2016年10月14日 作者:水星Excel 14,510 次浏览 暂无评论

在word中可以使用查找和替换功能批量替换文本、批量替换格式等等。

要在vba中实现word中的查找和替换功能,需要用到Find对象。

如果要执行某个查找动作,可以使用Find对象的Execute方法。

Find对象的Execute方法的语法如下:

expression.Execute (FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)

其中FindText参数表示要查找的文本字符串,如果该参数的值为空字符串,则表示查找格式。

Format参数设置为True,表示要查找格式。

ReplaceWith参数表示要替换的文本字符串,如果为空字符串,则表示把查找到的文本字符串删除。

Replace参数可以有3个取值,wdReplaceAll(2)表示替换全部查找到的字符串,wdReplaceNone(0)一个都不替换,wdReplaceOne(1)只替换第一个找到的字符串。

Find对象的Execute方法可以返回值,如果返回True,表示找到了结果,如果返回为False,则表示未找到结果。

如果用Range对象触发查找替换的动作,则每执行一次Find对象的Execute方法,Range对象都将被重新定义为被找到的结果所在的内容区域。

接下来,详细介绍用vba实现word的查找和替换功能。

一、用vba批量替换word中的某个文本字符串 Sub QQ1722187970() Const wdReplaceAll = 2 Const wdFindStop = 0 Dim oRng As Range Set oRng = Word.Selection.Range '先判断是否有选中区域,没有选中则表示整个文档 If oRng.Start = oRng.End Then Set oRng = Word.ActiveDocument.Content End If With oRng.Find '批量查找替换“主题”为“测试” sResult = .Execute(FindText:="主题", replacewith:="测试", Replace:=wdReplaceAll) End With End Sub 二、用vba循环所有找到的文本字符串 Sub QQ1722187970() Const wdReplaceAll = 2 Const wdFindStop = 0 Dim oRng As Range Set oRng = Word.Selection.Range '先判断是否有选中区域,没有选中则表示整个文档 If oRng.Start = oRng.End Then Set oRng = Word.ActiveDocument.Content End If With oRng.Find Do '先执行一次查找 bResult = .Execute(FindText:="测试") '如果找到了 If bResult = True Then '如果找到了,oRng对象重新定义为被找到的内容区域,输出oRng对象的开始和结束位置 Debug.Print oRng.Start, oRng.End End If Loop Until bResult = False End With End Sub 三、用vba批量替换word中的某个格式 Sub QQ1722187970() Const wdReplaceAll = 2 Const wdFindStop = 0 Dim oRng As Range Set oRng = Word.Selection.Range '先判断是否有选中区域,没有选中则表示整个文档 If oRng.Start = oRng.End Then Set oRng = Word.ActiveDocument.Content End If With oRng.Find .ClearFormatting '要查找的格式 .Font.Bold = True .Text = "" With .Replacement .ClearFormatting .Text = "" '要替换的格式 .Font.Bold = False .Font.ColorIndex = wdDarkBlue End With bResult = .Execute(Format:=True, Replace:=wdReplaceAll) End With End Sub 四、用vba循环所有找到的格式文本 Sub QQ1722187970() Const wdReplaceAll = 2 Const wdFindStop = 0 Dim oRng As Range Set oRng = Word.Selection.Range '先判断是否有选中区域,没有选中则表示整个文档 If oRng.Start = oRng.End Then Set oRng = Word.ActiveDocument.Content End If With oRng.Find .ClearFormatting '要查找的格式 .Font.Bold = True .Text = "" Do '先执行一次查找 bResult = .Execute(FindText:="", Format:=True) '如果找到了 If bResult = True Then '如果找到了,oRng对象重新定义为被找到的内容区域,输出oRng对象的开始和结束位置 Debug.Print oRng.Start, oRng.End End If Loop Until bResult = False End With End Sub 五、在excel vba中调用word的查找替换功能 Sub QQ1722187970() Const wdReplaceAll = 2 Dim oRng, oWord, oDoc Set oWord = VBA.CreateObject("Word.Application") Set oDoc = oWord.Documents.Add With oDoc Set oRng = .Content With oRng.Find .Execute FindText:=oWK.Range("b" & i).Value, ReplaceWith:=oWK.Range("c" & i).Text, Replace:=wdReplaceAll End With End With End Sub

 

其它相关文章推荐:如何用vba在word中删除所有手动分页符或者分节符?如何用vba查找替换word文档中的英文引号为空,而不包含中文引号?如何用vba按照格式查找替换word文本?如何在word中查找替换某个字符但是保留指定的词语?如何用vba选中所有word文档中的某个格式的文本?如何用vba将word文档按照手动分页符拆分? 分类 :  WORD VBA 标签 :  Execute , Find , Selection , 查找替换        

声明: 本站文章均属原创,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则视为侵权。如果想要每天都收到本站的技术文章推送,可以微信搜索公众号:水星Excel或者Excel_Office关注。其它事宜请加QQ:1722187970 或微信号:xycgenius 联系。 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3